Diálogo: Configuración del proyecto: Luz de análisis estático
Símbolo:
Función: El cuadro de diálogo activa las comprobaciones que se realizan con la versión ligera de CODESYS Análisis estático cada vez que se genera el código.
Llamar: mando, Luz de análisis estático categoría
Sugerencia
Puede excluir líneas de código del análisis de código estático marcando el código con el {analysis ...}
pragma o el {attribute 'analysis' := '...'}
pragma.
Para más información, ver: Analizar código estáticamente
Comprobaciones de compilación adicionales
SA0033: Variables no utilizadas | Detecta variables que se declaran pero no se usan dentro del código del programa compilado Para variables GVL: si existen varias aplicaciones en un proyecto, solo se verán afectados los objetos debajo de la aplicación actualmente activa. Si sólo hay una aplicación, entonces los objetos en el |
SA0028: Áreas de memoria superpuestas | Detecta las líneas de código donde dos o más variables reservan la misma memoria Por ejemplo, esto ocurre para las siguientes declaraciones: |
SA0006: Acceso de escritura desde varias tareas | Detecta variables en las que escribe más de una tarea |
SA0004: acceso de escritura múltiple en la salida | Detecta salidas que se escriben en más de una ubicación Nota: No se emite un error cuando una variable de salida ( Nota: un pragma no puede deshabilitar esta regla. |
SA0027: Múltiples usos de identificadores | Detecta múltiples usos de un nombre/identificador para una variable o un objeto (POU) dentro del alcance de un proyecto . Se detectan los siguientes casos:
|
SA0167: Informar instancias temporales de FunctionBlock | La comprobación detecta instancias de bloques de funciones que se declaran como variables temporales. Esto afecta a las instancias que se declaran en un método o función o como |
SA0175: Operación sospechosa en cadena | Inactivo por defecto Detecta ubicaciones de código sospechosas de codificación UTF-8 Se incluyen las siguientes construcciones:
En función del resultado de la comprobación, se aconseja no habilitar el Codificación UTF8 para STRING opción de compilación. Para más información, ver: Opciones de compilación |
SA0003: Sentencias vacías
; (* Comment *); iVar;
SA0006: Acceso concurrente
FUNCTION_BLOCK ADD_FB g_iTemp1 := g_iTemp1 + INT#1;
PROGRAM PLC_PRG //controlled by MainTask g_iTemp1 := g_iTemp1 + INT#2; g_xTemp2 := g_iTemp1 > INT#10;
PROGRAM PLC_PRG_1 //controlled by SubTask g_iTemp1 := g_iTemp1 - INT#3; g_xTemp2 := g_iTemp1 < INT#-10;
SA0004: Acceso de escritura múltiple en la salida
VAR_GLOBAL g_xVar AT %QX0.0 : BOOL ; g_iTest AT %QW0 : INT ; END_VAR
PROGRAM PLC_PRG IF iCondition < INT#0 THEN g_xVar := TRUE; g_iTest := INT#12; END_IF
CASE iCondition OF INT#1: g_xVar := FALSE; INT#2: g_iTest := INT#11; ELSE g_xVar := TRUE; g_iTest := INT#9; END_CASE
SA0006: Acceso de escritura desde varias tareas
FUNCTION_BLOCK ADD_FB g_iTemp1 := g_iTemp1 + INT#1;
PROGRAM PLC_PRG // Controlled by MainTask g_iTemp1 := g_iTemp1 + INT#2; g_xTemp2 := g_iTemp1 > INT#10;
PROGRAM PLC_PRG_1 //Controlled by SubTask g_iTemp1 := g_iTemp1 - INT#3; g_xTemp2 := g_iTemp1 < INT#-10;
SA0027: Uso múltiple del nombre
PROGRAM PLC_PRG VAR ton : INT; // error SA0027 END_VAR
SA0029: Notación en código diferente a declaración
A PLC_PRG
POU y un fnc
(función) POU existe en el árbol de dispositivos.
PROGRAM PLC_PRG VAR iVar:INT; _123test_var_: INT; END_VAR
ivar := iVar + 1; // notation different to that in the declaration part -> SA0029 _123TEST_var_ := _123test_var_INT; // notation different to that in the declaration part -> SA0029 Fnc(); // notation different to that in the devices tree -> SA0029
SA0167: Informar instancias temporales de FunctionBlock
PROGRAM PLC_PRG VAR END_VAR VAR_TEMP yafb: AFB; END_VAR
FUNCTION Fun : INT VAR_INPUT END_VAR VAR funafb: AFB; END_VAR
METHOD METH: INT VAR_INPUT END_VAR VAR methafb: AFB; END_VAR
Para más información, ver: Analizar código estáticamente